package com.ideaaedi.zoo.example.springboot.seata.alpha;

import com.ideaaedi.zoo.diy.artifact.openfeign.annotation.EnableZooFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
@EnableZooFeignClients(basePackages = "com.ideaaedi.zoo.example.springboot.seata.alpha.feign")
public class AppAlpha {
    
    public static void main(String[] args) {
        SpringApplication.run(AppAlpha.class, args);
    
        System.err.println();
        System.err.println();
        System.err.print(
                """
                测试步骤说明：
                  0. 准备seata（最好与项目版本2.0.0对应，本人测试时用的2.0.0）、nacos（最好与项目版本2.3.2对应，本人测试时用的2.3.2）环境 （自行准备即可，没有头绪的可参考： https://gitee.com/JustryDeng/notebook/blob/master/src/main/resources/%5BJava%5Dspring-cloud-re/%5B01%5Dseata%E5%AE%9E%E7%8E%B0%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1.md ）
                  1. 直接启动service-beta
                  2. debug启动service-alpha
                  3. 在service-alpha服务下，SysUserServiceImpl类中，所有【System.err.println(1 / 0);】代码位置打上断点
                  4. 在 http://localhost:8080/doc.html 上访问TestController中的相关接口
                  5. 进入断点后，观察sys_user、sys_role（提示：对应的建表文件在zoo-example-seata-service-alpha/src/main/resources/demo.sql）数据情况，假设此时情况为X
                  6. 放行断点，让本次请求完成
                  7. 再观察sys_user、sys_role数据情况，假设此时情况为Y。对比X和Y的数据情况，即可知道：分布式事务生效了
                  
                  注意事项： 如果seata服务端数据库和业务数据库不在同一个数据库上，但是都是同一类种数据库的话，那么最好保持这两个数据库的版本一
                           致（如：都用mysql8或都用mysql5.7，不要一个用8一个用5.7）。
                           否则，可能导致seata回滚失败
                """
        );
        System.err.println();
        System.err.println();
        System.err.println();
        System.err.println();
    }
}